function S = intenumcomp(fun,a,b,N,regla) 

	if strcmp(regla,'trapecio') 
		S = trapecio_compuesta(fun,a, b, N);
	endif		
	if strcmp(regla,'pm')
		S = punto_medio_compuesta(fun, a, b, N);
	endif	
	if strcmp(regla,'simpson') 
		S = simpson_compuesta(fun,a, b, N);
	endif
	
endfunction
	
function res = trapecio_compuesta(fun,a, b, N)

	h = (b-a)/N;
    sum = 0;

    for i = 1:N-1
        x = a + i*h;
        sum += feval(fun,x);
    endfor

	res = (h/2) * (feval(fun,a) + 2*sum + feval(fun,b));
    
endfunction

function res = punto_medio_compuesta(fun,a, b, N)
    
    h = (b-a)/N;
    sum = 0;

    for i = 1:N
        x1 = a + i*h;
        x0 = a + (i-1)*h;
        sum += (x1-x0)*feval(fun,(x1+x0)/2);
    endfor

    res = sum;

endfunction


function res = simpson_compuesta(fun,a, b, N)

	h = (b-a)/N;
    sum1 = 0;
    sum2 = 0;

    for j = 1:(N/2)-1
		i = 2 * j;
        x = a + (i * h);
        sum1 += feval(fun,x);
    endfor

    for j = 1 : N/2
		i = (2 * j) - 1;
        x = a + (i * h);
        sum2 += feval(fun,x);
    endfor

    res = (h/3) * (feval(fun,a) + 2*sum1 + 4*sum2 + feval(fun,b));
    
endfunction

function y = f(x)
    y = exp(-x);
endfunction
